#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# 导入OpenCV计算机视觉库（安装时包名为opencv-python）
import cv2

# 初始化摄像头捕获对象（0表示系统默认摄像头，其他摄像头可尝试1,2等）
cap = cv2.VideoCapture(0)  # 获取摄像头句柄,只连接一个摄像头时参数写0即可
i = 1  # 照片序号，用于生成递增的文件名

# 无限循环
while True:
    # 从摄像头读取一帧画面
    # ret: 布尔值，表示是否成功捕获帧（True代表成功）
    # frame: 捕获到的图像帧（numpy数组格式，BGR色彩空间）
    ret, frame = cap.read()  # 读一帧
    
    # 创建名为"display"的窗口显示实时画面
    # 窗口会自动适应图像尺寸（首次调用时创建，后续更新内容）
    cv2.imshow("display", frame)  # 显示
    
    # 等待键盘输入（1ms超时），0xFF用于兼容64位系统
    # waitKey返回32位整数，通过与操作截取低8位（ASCII码部分）
    key = cv2.waitKey(1) & 0xFF  # 检测键盘，最长等待1ms (注意0表示永远而非0ms)
    
    # 按键处理逻辑
    if key == ord('p'):  # 按下p键（
        # 将当前帧保存为递增文件名的JPEG图像，保存在程序运行目录
        cv2.imwrite("image"+str(i)+".jpg", frame)  # 按p时保存图片
        i = i + 1  # 文件名序号递增
    if key == ord('q'):  # 按下q键，退出主循环
        break 

# 释放摄像头
cap.release()
# 关闭所有OpenCV创建的窗口
cv2.destroyAllWindows()